package cn.net.Inner;
//总结:匿名内部类属于局部内部类,而且是没有名字的局部内部类,通常和匿名对象一起使用
public class TestInner5 {
    public static void main(String[] args) {
        /*匿名内部类一*/
        new Inner(){//3.1接口的实现类:创建接口实现类 +重写接口中的抽象方法 + 创建实现类对象 + 调用方法
            @Override
            public void say() {

            }

            @Override
            public void show() {

            }
        }.say();//3.3触发指定的重写后的方法，匿名对象只能调用一个，并且只能使用一次
         /*匿名内部类2*/
        new Inner2() {//new Inner2(){}.drink();
            @Override
            public void drink() {
                System.out.println("不醉不归");
            }
        }.drink();
        /*匿名内部类3*/
        //7.普通类的匿名对象，不会强制要求产生匿名内部类的重写方法
        // 可以直接创建匿名对象，干一件事
        new Inner3().power();
        //new创建对象,可以干多件事
        Inner3 in = new Inner3();
        in.power();
        in.study();
    }

}


interface Inner{ //创建接口----匿名内部类一
    void say();//抽象方法
    void show();
}
abstract class Inner2{//创建抽象父类----匿名内部类二
    public void play(){
        System.out.println("我是Inner2抽象类中的普通方法play()");
    }
    abstract public void drink();//抽象方法
}

class Inner3{ //普通类
    public void power(){
        System.out.println("我们会越来越强的，光头强");
    }
    public void study(){
        System.out.println("什么都阻挡不了我学习的脚步");
    }
}

